package com.dev.utils.app;

import com.dev.utils.LogUtils;
import ohos.agp.components.Component;
import ohos.agp.components.TextField;


/**
 * detail: EditText 工具类
 * @author Ttt
 * <pre>
 *     EditText 属性大全 ( 不局限于仅仅是 EditText )
 *     @see <a href="https://my.oschina.net/xsjayz/blog/121685"/>
 *     <p></p>
 *     EditText 多行显示及所有属性
 *     @see <a href="https://www.cnblogs.com/zhujiabin/p/5736470.html"/>
 *     <p></p>
 *     EditText 设置不自动获取焦点, 点击后才获取, 并弹出软键盘
 *     @see <a href="https://blog.csdn.net/juvary/article/details/80151358"/>
 *     <p></p>
 *     EditText 点击无反应解决办法
 *     @see <a href="https://blog.csdn.net/cccheer/article/details/79218143"/>
 *     <p></p>
 *     EditText 限制输入的 4 种方法
 *     @see <a href="https://blog.csdn.net/zhoujn90/article/details/44983905"/>
 *     <p></p>
 *     自定义 EditText 光标和下划线颜色
 *     @see <a href="https://segmentfault.com/a/1190000009507919"/>
 * </pre>
 */
public class EditTextUtils {


    private EditTextUtils() {
    }

    // 日志 TAG
    private static final String TAG = EditTextUtils.class.getSimpleName();

    // =================
    // = 获取 EditText =
    // =================

    /**
     * 获取 EditText
     * @param view {@link Component}
     * @param <T>  泛型
     * @return {@link TextField}
     */
    public static <T extends TextField> T getEditText(final Component view) {
        if (view != null) {
            try {
                return (T) view;
            } catch (Exception e) {
                LogUtils.error(TAG, e+"getEditText");
            }
        }
        return null;
    }


    /**
     * 获取输入的内容
     * @param editText {@link TextField}
     * @param <T>      泛型
     * @return {@link TextField}
     */
    public static <T extends TextField> String getText(final T editText) {
        if (editText != null) {
            return editText.getText().toString();
        }
        return "";
    }

    /**
     * 设置内容
     * @param editText {@link TextField}
     * @param content  文本内容
     * @param <T>      泛型
     * @return {@link TextField}
     */
    public static <T extends TextField> T setText(
            final T editText,
            final CharSequence content
    ) {
        return setText(editText, content, true);
    }

    /**
     * 设置内容
     * @param editText {@link TextField}
     * @param content  文本内容
     * @param isSelect 是否设置光标
     * @param <T>      泛型
     * @return {@link TextField}
     */
    public static <T extends TextField> T setText(
            final T editText,
            final CharSequence content,
            final boolean isSelect
    ) {
        if (editText != null && content != null) {
            editText.setText((String) content);
            // 设置光标
            if (isSelect) {
                //editText.setSelection(editText.getText().toString().length());
            }
        }
        return editText;
    }

}
